﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using System.Collections.ObjectModel;
using System.Data;
using System.Windows.Media.Imaging;
using System.ComponentModel;
using System.Diagnostics;
using System.Windows.Controls;
using System.Globalization;
using produccion.modelo;
using produccion.AccesoDatos;
using produccion.clases;
using produccion.forms;
using produccion.reportes;
using System.Windows.Input;
using System.Collections.Specialized;

namespace produccion.vistamodelo
{
    class VMConPedCli : ViewModelBase
    {
        #region Campos
            private List<clases.CLSMAECLIP> _lisCli = new List<clases.CLSMAECLIP>();
            private clases.CLSMAECLIP _selCli = new clases.CLSMAECLIP();
            private List<clases.CLSMAECLIP> _lisSubcli = new List<clases.CLSMAECLIP>();
            private clases.CLSMAECLIP _selSubcli = new clases.CLSMAECLIP();
            private clases.CLSMAELIN _lineas = new CLSMAELIN();
        #endregion

        #region Constructor
            public VMConPedCli()
            {
                try
                {
                    consLisCli();
                    if (MDOgeneral.conexion == null || MDOgeneral.conexion.State == ConnectionState.Closed)
                    {
                        MDOgeneral.conectar();
                    }
                    strTituloVentana = "Consulta de pedidos clientes - Usuario: " + MDOgeneral.usuario + " - [FRMconPedCli]";
                    lisLineas.CollectionChanged += OnCollectionChanged;
                    cargarLineas();
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }
        #endregion

        #region Propiedades
            private string _strTituloVentana;
            public string strTituloVentana
            {
                get { return _strTituloVentana; }
                set { _strTituloVentana = value; base.OnPropertyChanged("strTituloVentana"); }
            }

            public List<clases.CLSMAECLIP> lisCli
            {
                get{ return _lisCli; }
                set { _lisCli = value; base.OnPropertyChanged("lisCli"); }
            }

            public clases.CLSMAECLIP selCli 
            {
                get { return _selCli;}
                set 
                {
                    _selCli = value;
                    base.OnPropertyChanged("selCli");
                    if (_selCli != null)
                        consLisSubcli();
                }
            }

            public List<clases.CLSMAECLIP> lisSubcli
            {
                get { return _lisSubcli; }
                set { _lisSubcli = value; base.OnPropertyChanged("lisSubcli"); }
            }

            
            public clases.CLSMAECLIP selSubcli
            {
                get { return _selSubcli; }
                set { _selSubcli = value; base.OnPropertyChanged("selSubcli"); }
            }

            private DateTime _desde = DateTime.Today;
            public DateTime desde 
            {
                get { return _desde; }
                set { _desde = value; base.OnPropertyChanged("desde"); }
            }

            private DateTime _hasta = DateTime.Today;
            public DateTime hasta 
            {
                get { return _hasta; }
                set { _hasta = value; base.OnPropertyChanged("hasta"); }
            }

            private string _estado = "P";
            public string estado 
            {
                get { return _estado; }
                set { _estado = value; base.OnPropertyChanged("estado"); }
            }

            private DataTable _informe = new DataTable("TMPENCPPCP");
            public DataTable informe 
            {
                get { return _informe; }
                set { _informe = value; base.OnPropertyChanged("informe"); }
            }
            private DataTable _informeagrupado = new DataTable();
            public DataTable informeagrupado
            {
                get { return _informeagrupado; }
                set { _informeagrupado = value; base.OnPropertyChanged("informeagrupado"); }
            }

            private DataTable _informeDet = new DataTable();
            public DataTable informeDet
            {
                get { return _informeDet; }
                set { _informeDet = value; base.OnPropertyChanged("informeDet"); }
            }

            private DataTable _informeDet2 = new DataTable();
            public DataTable informeDet2
            {
                get { return _informeDet2; }
                set { _informeDet2 = value; base.OnPropertyChanged("informeDet2"); }
            }

            private VMvisorFotoReferencia _visorFotoReferencia = new VMvisorFotoReferencia();
            public VMvisorFotoReferencia visorFotoReferencia
            {
                get { return _visorFotoReferencia; }
                set { _visorFotoReferencia = value; base.OnPropertyChanged("visorFotoReferencia"); }
            }

            private string _pedido;
            public string pedido
            {
                get { return _pedido; }
                set { _pedido = value; base.OnPropertyChanged("pedido"); }
            }

            private string _original;
            public string original
            {
                get { return _original; }
                set { _original = value; base.OnPropertyChanged("original"); }
            }

            private DateTime _fecha;
            public DateTime fecha
            {
                get { return _fecha; }
                set { _fecha = value; base.OnPropertyChanged("fecha"); }
            }

            private DateTime _entrega;
            public DateTime entrega
            {
                get { return _entrega; }
                set { _entrega = value; base.OnPropertyChanged("entrega"); }
            }

            private string _referencia;
            public string referencia
            {
                get { return _referencia; }
                set { _referencia = value; base.OnPropertyChanged("referencia"); }
            }

            private string _nomreferencia;
            public string nomreferencia
            {
                get { return _nomreferencia; }
                set { _nomreferencia = value; base.OnPropertyChanged("nomreferencia"); }
            }

            private string _color;
            public string color
            {
                get { return _color; }
                set { _color = value; base.OnPropertyChanged("color"); }
            }

            private string _nomcolor;
            public string nomcolor
            {
                get { return _nomcolor; }
                set { _nomcolor = value; base.OnPropertyChanged("nomcolor"); }
            }

            private string _codcliente;
            public string codcliente
            {
                get { return _codcliente; }
                set { _codcliente = value; base.OnPropertyChanged("codcliente"); }
            }

            private string _nomcliente;
            public string nomcliente
            {
                get { return _nomcliente; }
                set { _nomcliente = value; base.OnPropertyChanged("nomcliente"); }
            }

        
            private DataTable _infDet = new DataTable("TMPDETPPCP");
            public DataTable infDet
            {
                get { return _infDet; }
                set { _infDet = value; base.OnPropertyChanged("infDet"); }
            }

            private DataTable _infDet2 = new DataTable();
            public DataTable infDet2
            {
                get { return _infDet2; }
                set { _infDet2 = value; base.OnPropertyChanged("infDet2"); }
            }

            private DataTable _infDet22 = new DataTable();
            public DataTable infDet22
            {
                get { return _infDet22; }
                set { _infDet22 = value; base.OnPropertyChanged("infDet22"); }
            }

            private BitmapImage _imagen1 = new BitmapImage();
            public BitmapImage imagen1
            {
                get { return _imagen1; }
                set { _imagen1 = value; base.OnPropertyChanged("imagen1"); }
            }
            private int _index = 0;
            public int index 
            {
                get { return _index; }
                set 
                { 
                    _index = value;
                    if (_index != -1) 
                    {
                        imagen1 = null;
                        Sindex = -1;
                        pedido = informe.Rows[index]["NROPED_TMP"].ToString();
                        original = informe.Rows[index]["NROORI_TMP"].ToString();
                        fecha = Convert.ToDateTime(informe.Rows[index]["FECPED_TMP"]);
                        entrega = Convert.ToDateTime(informe.Rows[index]["FECENT_TMP"]);
                    }
                    base.OnPropertyChanged("index");
                }
            }

            private int _Sindex = 0;
            public int Sindex 
            {
                get { return _Sindex;}
                set 
                { 
                    _Sindex = value;
                    if (_Sindex != -1) 
                    {
                        referencia = infDet.Rows[_Sindex]["CODREF_TMP"].ToString();
                        nomreferencia = infDet.Rows[_Sindex]["NOMREF_TMP"].ToString();
                        color = infDet.Rows[_Sindex]["CODCOL_TMP"].ToString();
                        nomcolor = infDet.Rows[_Sindex]["NOMCOL_TMP"].ToString();

                        visorFotoReferencia.strCodigo = referencia ;
                        visorFotoReferencia.strColor = color;                        
                    }
                    base.OnPropertyChanged("Sindex");
                }
            }

            private ObservableCollection<VMLineas> _lisLineas = new ObservableCollection<VMLineas>();
            public ObservableCollection<VMLineas> lisLineas
            {
                get { return _lisLineas; }
                set { _lisLineas = value; base.OnPropertyChanged("lisLineas"); }
            }

            private VMLineas _sellisLineas;
            public VMLineas sellisLineas
            {
                get { return _sellisLineas; }
                set
                {
                    _sellisLineas = value;
                    base.OnPropertyChanged("sellisLineas");
                }
            }

            private Boolean _IsOpenPedidoCliente = false;
            public Boolean IsOpenPedidoCliente
            {
                get { return _IsOpenPedidoCliente; }
                set { _IsOpenPedidoCliente = value; base.OnPropertyChanged("IsOpenPedidoCliente"); }
            }

            private Boolean _IsOpenDetallePedido = false;
            public Boolean IsOpenDetallePedido
            {
                get { return _IsOpenDetallePedido; }
                set { _IsOpenDetallePedido = value; base.OnPropertyChanged("IsOpenDetallePedido"); }
            }

            private Boolean _logTodos = true;
            public Boolean logTodos
            {
                get { return _logTodos; }
                set
                {
                    _logTodos = value;
                    if (_logTodos)
                    {
                        selTodos();
                    }
                    else
                    {
                        selNingun();
                    }
                    base.OnPropertyChanged("logTodos");
                }
            }

        #endregion

        #region Comandos
            RelayCommand _cmdProcesar;
            public ICommand cmdProcesar
            {
                get
                {
                    if (_cmdProcesar == null)
                    {
                        _cmdProcesar = new RelayCommand(r => procesar());
                    }
                    return _cmdProcesar;
                }
            }

            RelayCommand _cmdImprimir;
            public ICommand cmdImprimir
            {
                get
                {
                    if (_cmdImprimir == null)
                    {
                        _cmdImprimir = new RelayCommand(r => imprimir());
                    }
                    return _cmdImprimir;
                }
            }

            RelayCommand _cmdImprimir2;
            public ICommand cmdImprimir2
            {
                get
                {
                    if (_cmdImprimir2 == null)
                    {
                        _cmdImprimir2 = new RelayCommand(r => ImpDet());
                    }
                    return _cmdImprimir2;
                }
            }

            RelayCommand _cmdSalir;
            public ICommand cmdSalir
            {
                get
                {
                    if (_cmdSalir == null)
                    {
                        _cmdSalir = new RelayCommand(Salir);
                    }
                    return _cmdSalir;
                }
            }

            RelayCommand _cmdSalir2;
            public ICommand cmdSalir2
            {
                get
                {
                    if (_cmdSalir2 == null)
                    {
                        _cmdSalir2 = new RelayCommand(r => Salir2());
                    }
                    return _cmdSalir2;
                }
            }

            RelayCommand _cmdSalir3;
            public ICommand cmdSalir3
            {
                get
                {
                    if (_cmdSalir3 == null)
                    {
                        _cmdSalir3 = new RelayCommand(r => Salir3());
                    }
                    return _cmdSalir3;
                }
            }

            RelayCommand _cmdVerDetalle;
            public ICommand cmdVerDetalle
            {
                get
                {
                    if (_cmdVerDetalle == null)
                    {
                        _cmdVerDetalle = new RelayCommand(r => procDet());
                    }
                    return _cmdVerDetalle;
                }
            }

            RelayCommand _cmdVerDetalle2;
            public ICommand cmdVerDetalle2
            {
                get
                {
                    if (_cmdVerDetalle2 == null)
                    {
                        _cmdVerDetalle2 = new RelayCommand(r => procDet2());
                    }
                    return _cmdVerDetalle2;
                }
            }

        #endregion

        #region Metodos

            void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
            {
                try
                {
                    if (e.NewItems != null && e.NewItems.Count > 0)
                    {
                        foreach (VMLineas pro in e.NewItems)
                        {
                            pro.PropertyChanged += OnPropertyChanged;
                        }
                    }
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
            {
                int numTotal = 0;
                foreach (var item in lisLineas.Where(w => w.logSeleccionado.Equals(true)))
                {
                    numTotal = numTotal + 1;
                }
            }

            public void consLisCli()
            {
                try
                {
                    lisCli = selCli.listaCliente();
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            public void consLisSubcli()
            {
                try
                {
                    if (selCli != null)
                    {
                        selSubcli.CODCLI_CLI = selCli.CODCLI_CLI;
                        lisSubcli = selSubcli.listaSubCliente();
                    }
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            public void procesar()
            {
                try
                {
                    Mouse.OverrideCursor = Cursors.Wait;
                    string strSubCliente;
                    string strClien;
                    if (selSubcli == null)
                        strSubCliente = "";
                    else
                    {
                        if (selSubcli.NOMCLI_CLI != null)
                            strSubCliente = selSubcli.CODCLI_CLI;
                        else
                            strSubCliente = "";
                    }

                    if (selCli == null)
                        strClien = "";
                    else
                    {
                        if (selCli.NOMCLI_CLI != null)
                            strClien = selCli.CODCLI_CLI;
                        else
                            strClien = "";
                    }

                    string strLineas = "";
                    foreach (VMLineas lin in lisLineas)
                    {
                        if (lin.logSeleccionado==true)
                            strLineas = strLineas + lin.strCodigoLinea + "-";                        
                    }

                    clases.CLSTEMPORAL tmp = new clases.CLSTEMPORAL();
                    tmp.CONSENCPPCP(strClien, strSubCliente, desde, hasta, estado, strLineas);
                    informe = tmp.dtPedidosCliente;
                    informeDet = tmp.dtDetallePedCli;
                    informeDet2 = tmp.dtDetalleItems;

                    informeagrupado = tmp.dtPedidosPorCliente;
                    Mouse.OverrideCursor = Cursors.IBeam;
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            public void procDet()
            {
                try
                {
                    infDet.Clear();
                    clases.CLSTEMPORAL tmp = new clases.CLSTEMPORAL();
                    if (pedido != null)
                    {
                        pedido = informe.Rows[index]["NROPED_TMP"].ToString();
                        original = informe.Rows[index]["NROORI_TMP"].ToString();
                        fecha = Convert.ToDateTime(informe.Rows[index]["FECPED_TMP"]);
                        entrega = Convert.ToDateTime(informe.Rows[index]["FECENT_TMP"]);
                        codcliente = informe.Rows[index]["CODCLI_TMP"].ToString();
                        nomcliente = informe.Rows[index]["NOMCLI_TMP"].ToString();
                    }
                    else
                    {
                        pedido = informe.Rows[0]["NROPED_TMP"].ToString();
                        original = informe.Rows[0]["NROORI_TMP"].ToString();
                        fecha = Convert.ToDateTime(informe.Rows[0]["FECPED_TMP"]);
                        entrega = Convert.ToDateTime(informe.Rows[0]["FECENT_TMP"]);
                        codcliente = informe.Rows[0]["CODCLI_TMP"].ToString();
                        nomcliente = informe.Rows[0]["NOMCLI_TMP"].ToString();
                    }

                    var dttmp = from xx in informeDet.AsEnumerable() where xx["NROPED_TMP"].ToString().Equals(pedido) && xx["CODCLI_TMP"].ToString().Equals(codcliente) select xx;
                    infDet = dttmp.CopyToDataTable();
                    IsOpenPedidoCliente = true;
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            public void procDet2()
            {
                try
                {
                    infDet2.Clear();
                    if (referencia != null)
                    {
                        referencia = infDet.Rows[Sindex]["CODREF_TMP"].ToString();
                        nomreferencia = infDet.Rows[Sindex]["NOMREF_TMP"].ToString();
                        color = infDet.Rows[Sindex]["CODCOL_TMP"].ToString();
                        nomcolor = infDet.Rows[Sindex]["NOMCOL_TMP"].ToString();
                        codcliente = infDet.Rows[Sindex]["CODCLI_TMP"].ToString();
                    }
                    else
                    {
                        referencia = infDet.Rows[0]["CODREF_TMP"].ToString();
                        nomreferencia = infDet.Rows[0]["NOMREF_TMP"].ToString();
                        color = infDet.Rows[0]["CODCOL_TMP"].ToString();
                        nomcolor = infDet.Rows[0]["NOMCOL_TMP"].ToString();
                        codcliente = infDet.Rows[0]["CODCLI_TMP"].ToString();
                    }

                    var dttmp = from xx in informeDet2.AsEnumerable()
                                where xx["NROPED_TMP"].ToString().Equals(pedido) && xx["CODCLI_TMP"].ToString().Equals(codcliente) 
                                && xx["CODREF_TMP"].ToString().Equals(referencia) && xx["CODCOL_TMP"].ToString().Equals(color) select xx;
                    infDet2 = dttmp.CopyToDataTable();

                    // Crea un data table con los nombres de las columnas con las tallas
                    int numCuenta = 0;
                    CLSTEMPORAL temp = new CLSTEMPORAL();
                    DataTable dtTalla = temp.consultaTallas(referencia);
                    DataTable dt22 = new DataTable();

                    dt22.Columns.Add("CODCLI_TMP");
                    dt22.Columns.Add("NROPED_TMP");
                    dt22.Columns.Add("CODREF_TMP");
                    dt22.Columns.Add("CODCOL_TMP");
                    dt22.Columns.Add("CONSEC_TMP");
                    dt22.Columns.Add("LINEA_TMP");

                    foreach (DataRow dr in dtTalla.Rows)
                    {
                        dt22.Columns.Add(dr["CODTAL_TAL"].ToString(), System.Type.GetType("System.Int32"));
                        numCuenta++;
                    }

                    dt22.Columns.Add("TTT_TMP", System.Type.GetType("System.Int32"));

                    foreach (DataRow dr1 in infDet2.Rows)
                    {
                        numCuenta = 1;
                        DataRow fila = dt22.NewRow();
                        fila["CODCLI_TMP"] = dr1["CODCLI_TMP"].ToString();
                        fila["NROPED_TMP"] = dr1["NROPED_TMP"].ToString();
                        fila["CODREF_TMP"] = dr1["CODREF_TMP"].ToString();
                        fila["CODCOL_TMP"] = dr1["CODCOL_TMP"].ToString();
                        fila["CONSEC_TMP"] = dr1["CONSEC_TMP"].ToString();
                        fila["LINEA_TMP"] = dr1["LINEA_TMP"].ToString();

                        foreach (DataRow dr2 in dtTalla.Rows)
                        {
                            fila[dr2["CODTAL_TAL"].ToString()] = Convert.ToInt32(dr1["T" + Convert.ToString(numCuenta) + "_TMP"]);
                            numCuenta++;
                        }
                        fila["TTT_TMP"] = dr1["TTT_TMP"].ToString();

                        dt22.Rows.Add(fila);
                    }

                    infDet22.Clear();
                    var dttmp2 = from xx in dt22.AsEnumerable() select xx;
                    infDet22 = dttmp2.CopyToDataTable();
                    //

                    IsOpenDetallePedido = true;
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            public void imprimir()
            {
                try
                {
                    DataSet ds = new DataSet("dsConPedCli");
                    DataTable encabezado = new DataTable("ENCABEZADO");
                    encabezado.Columns.Add("CLIENTE");
                    encabezado.Columns.Add("DESDE");
                    encabezado.Columns.Add("HASTA");
                    encabezado.Columns.Add("ESTADO");
                    encabezado.Columns.Add("SUBCLIENTE");
                    encabezado.Columns.Add("STREMPRESA");
                    DataRow r = encabezado.NewRow();
                    r["CLIENTE"] = selCli != null ? selCli.NOMCLI_CLI : "";
                    r["DESDE"] = desde.ToShortDateString();
                    r["HASTA"] = hasta.ToShortDateString();
                    r["ESTADO"] = estado.Equals("P") ? "PENDIENTE" : "ORIGINAL";
                    r["SUBCLIENTE"] = selSubcli != null ? selSubcli.NOMCLI_CLI : "";
                    r["STREMPRESA"] = MDOgeneral.strEmpresaImprime;
                    encabezado.Rows.Add(r);
                    ds.Tables.Add(encabezado);
                    informe.TableName = "TMPENCPPCP";
                    DataTable val = informe;
                    foreach (DataRow fila in val.Rows)
                    {
                        fila["NOMSUB_TMP"] = fila["CODSUB_TMP"] + " - " + fila["NOMSUB_TMP"];//FJRF - modificamos el nombre del sub cliente para q le aparezca el codigo

                        fila["CANMAS_TMP"] = Convert.ToDouble(fila["CANMAS_TMP"]) < 0 ? 0 : Convert.ToDouble(fila["CANMAS_TMP"]);
                        fila["CANPEN_TMP"] = Convert.ToDouble(fila["CANPEN_TMP"]) < 0 ? 0 : Convert.ToDouble(fila["CANPEN_TMP"]);
                    }
                    ds.Tables.Add(val.Copy());
                    Vista vista = new Vista { ds = ds, reporte = @"reportes\repConPedCli.rpt" };
                    vista.Show();
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            public void ImpDet()
            {
                try
                {
                    DataSet ds = new DataSet("dsInfoPedCli");
                    DataTable encabezado = new DataTable("ENCABEZADO");
                    encabezado.Columns.Add("CLIENTE");
                    encabezado.Columns.Add("PEDIDO");
                    encabezado.Columns.Add("ORIGINAL");
                    encabezado.Columns.Add("FECHA");
                    encabezado.Columns.Add("ENTREGA");
                    encabezado.Columns.Add("SUBCLIENTE");
                    encabezado.Columns.Add("STREMPRESA");
                    DataRow r = encabezado.NewRow();
                    r["CLIENTE"] = selCli != null ? selCli.NOMCLI_CLI : "";
                    r["PEDIDO"] = pedido;
                    r["ORIGINAL"] = original;
                    r["FECHA"] = fecha.ToShortDateString();
                    r["ENTREGA"] = entrega.ToShortDateString();
                    r["SUBCLIENTE"] = selSubcli != null ? selSubcli.NOMCLI_CLI : "";
                    r["STREMPRESA"] = MDOgeneral.strEmpresaImprime;
                    encabezado.Rows.Add(r);
                    ds.Tables.Add(encabezado);
                    infDet.TableName = "TMPDETPPCP";
                    DataTable val = infDet;
                    foreach (DataRow fila in val.Rows)
                    {
                        fila["CANMAS_TMP"] = Convert.ToDouble(fila["CANMAS_TMP"]) < 0 ? 0 : Convert.ToDouble(fila["CANMAS_TMP"]);
                        fila["CANPEN_TMP"] = Convert.ToDouble(fila["CANPEN_TMP"]) < 0 ? 0 : Convert.ToDouble(fila["CANPEN_TMP"]);
                    }
                    ds.Tables.Add(val.Copy());
                    Vista vista = new Vista { ds = ds, reporte = @"reportes\repInfoPedCli.rpt" };
                    vista.Show();
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }

            void cargarLineas()
            {
                try
                {
                    int numContador = 0;
                    List<CLSMAELIN> lislin = new List<CLSMAELIN>();
                    lislin = _lineas.ListarLineas();

                    List<VMLineas> all = (from lis in lislin select new VMLineas(lis)).ToList();
                    foreach (VMLineas xx in all)
                    {
                        xx.PropertyChanged += OnPropertyChanged;
                        numContador = numContador + 1;
                    }
                    lisLineas.Clear();
                    lisLineas = new ObservableCollection<VMLineas>(all);
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }


            private void selTodos()
            {
                foreach (VMLineas lis in lisLineas)
                {
                    lis.logSeleccionado = true;
                }
            }

            private void selNingun()
            {
                foreach (VMLineas lis in lisLineas)
                {
                    lis.logSeleccionado = false;
                }
            }

            public void Salir2()
            {
                IsOpenPedidoCliente = false;
            }

            public void Salir3()
            {
                IsOpenDetallePedido = false;
            }

            public void Salir(Object frmformulario)
            {
                ((Window)frmformulario).Close();
            }

        #endregion
    }

    #region Vista-modelo
    public class VMLineas : ViewModelBase
    {

        #region Campos
        private CLSMAELIN _lineas = new CLSMAELIN();
        #endregion

        #region Constructor

        public VMLineas(CLSMAELIN lineas)
        {
            _lineas = lineas;
        }

        #endregion

        #region Propiedades

        public string strCodigoLinea
        {
            get { return _lineas.CODLIN_LIN; }
            set { _lineas.CODLIN_LIN = value; base.OnPropertyChanged("strCodigoLinea"); }
        }

        public string strNombreLinea
        {
            get { return _lineas.NOMLIN_LIN; }
            set { _lineas.NOMLIN_LIN = value; base.OnPropertyChanged("strNombreLinea"); }
        }

        public Boolean logSeleccionado
        {
            get { return _lineas.LOGSELECCIONADO; }
            set { _lineas.LOGSELECCIONADO = value; base.OnPropertyChanged("logSeleccionado"); }
        }

        #endregion

        #region Metodos

        public CLSMAELIN getLineas()
        {
            return _lineas;
        }

        #endregion

    }
    #endregion
}
